package com.company;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class StudentFrame extends JFrame {
    ClassTest c = new ClassTest();
    JLabel labNo;
    JLabel labName;
    JLabel labAge;
    JLabel labscore1;
    JLabel labscore2;
    JLabel labscore3;
    JLabel labscore4;
    JLabel labTip;
    JLabel labavr;

    JTextField txtNo;
    JTextField txtName;
    JTextField txtAge;
    JTextField txtscore1;
    JTextField txtscore2;
    JTextField txtscore3;
    JTextField txtscore4;
    JTextField txtavr;

    JButton btnAdd;
    JButton btnRemove;
    JButton btnModify;
    JButton btnClear;
    JButton btnFirst;
    JButton btnPrev;
    JButton btnNext;
    JButton btnLast;
    JButton btnCheck;
    JOptionPane dialog;

    public StudentFrame() {
        this.setBounds(300, 100, 650, 530);
        this.setTitle("烟台大学 -- --学生信息管理系统");
        this.setLayout(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        studentin();
        addStu();
        firstStudent();
        lastStudent();
        previous();
        next();
        remove();
        check();
        modify();
        clear();
        this.setVisible(true);
    }

    public void studentin() {
        labTip = new JLabel("登陆成功 ！您已经进入管理系统（仅输入学号便可查找学生信息）.");
        labTip.setBounds(50, 2, 550, 45);
        labNo = new JLabel("学生学号:");
        labNo.setBounds(50, 20, 100, 50);
        txtNo = new JTextField("请输入6位学号：",30);
        txtNo.setBounds(130, 35, 180, 30);
        labName = new JLabel("学生姓名:");
        labName.setBounds(50, 60, 100, 50);
        txtName = new JTextField("请输入学生姓名：",30);
        txtName.setBounds(130, 76, 180, 30);
        labAge = new JLabel("班级：");
        labAge.setBounds(50, 100, 50, 50);
        txtAge = new JTextField("请输入学生所在班级：",30);
        txtAge.setBounds(130, 117, 180, 30);
        labscore1 = new JLabel("JAVA 成绩:");
        labscore1.setBounds(50, 140, 100, 50);
        txtscore1 = new JTextField("请输入学生成绩：",30);
        txtscore1.setBounds(130, 158, 180, 30);
        labscore2 = new JLabel("C语言成绩:");
        labscore2.setBounds(50, 189, 100, 50);
        txtscore2 = new JTextField("请输入学生成绩：",30);
        txtscore2.setBounds(130, 199, 180, 30);
        labscore3 = new JLabel("Python成绩:");
        labscore3.setBounds(50, 230, 100, 50);
        txtscore3 = new JTextField("请输入学生成绩：",30);
        txtscore3.setBounds(130, 240, 180, 30);
        labscore4 = new JLabel("C++ 成绩:");
        labscore4.setBounds(50, 290, 100, 50);
        txtscore4 = new JTextField("请输入学生成绩：",30);
        txtscore4.setBounds(130, 301, 180, 30);
        labavr = new JLabel("操作说明  ** |<< : 第一个学生信息    <:上一位学生信息   >：下一个学生信息  >>|：最后一个学生信息");
        labavr.setBounds(50, 330, 580, 50);

        btnAdd = new JButton("添加");
        btnAdd.setBounds(50, 385, 80, 20);
        btnAdd.setForeground(Color.BLACK);
        btnModify = new JButton("修改");
        btnModify.setBounds(150, 385, 80, 20);
        btnModify.setForeground(Color.BLUE);
        btnRemove = new JButton("删除");
        btnRemove.setBounds(250, 385, 80, 20);
        btnRemove.setForeground(Color.RED);
        btnClear = new JButton("清空");
        btnClear.setBounds(350, 385, 80, 20);
        btnClear.setForeground(Color.GREEN);
        btnCheck = new JButton("查找信息");
        btnCheck.setBounds(350, 145, 160, 50);
        btnCheck.setForeground(Color.BLACK);
        btnFirst = new JButton("|<<");
        btnFirst.setBounds(50, 432, 80, 20);
        btnFirst.setForeground(Color.PINK);
        btnPrev = new JButton("<");
        btnPrev.setBounds(150, 432, 80, 20);
        btnPrev.setForeground(Color.BLACK);
        btnNext = new JButton(">");
        btnNext.setBounds(250, 432, 80, 20);
        btnNext.setForeground(Color.BLACK);
        btnLast = new JButton(">>|");
        btnLast.setBounds(350, 432, 80, 20);
        btnLast.setForeground(Color.PINK);

        this.add(labNo);
        this.add(labName);
        this.add(labAge);
        this.add(labscore1);
        this.add(txtNo);
        this.add(labTip);
        this.add(txtName);
        this.add(txtAge);
        this.add(txtscore1);
        this.add(btnAdd);
        this.add(btnRemove);
        this.add(btnModify);
        this.add(btnClear);
        this.add(btnFirst);
        this.add(btnPrev);
        this.add(btnNext);
        this.add(btnLast);
        this.add(btnCheck);
        this.add(labavr);
        this.add(labscore2);
        this.add(txtscore2);
        this.add(labscore3);
        this.add(txtscore3);
        this.add(labscore4);
        this.add(txtscore4);


    }

    public boolean blank() {
        if (txtNo.getText().equals("")) {
            dialog.showMessageDialog(null, "学号输入有误 请重新输入！");
            return false;
        }
        if (txtName.getText().equals("")) {
            dialog.showMessageDialog(null, "名字输入有误 请重新输入！");
            return false;
        }
        if (txtAge.getText().equals("")) {
            dialog.showMessageDialog(null, "班级输入有误 请重新输入！");
            return false;
        }if (txtscore1.getText().equals("")) {
            dialog.showMessageDialog(null, "成绩输入有误 请重新输入！");
            return false;
        }if (txtscore2.getText().equals("")) {
            dialog.showMessageDialog(null, "成绩输入有误 请重新输入！");
            return false;
        }
        if (txtscore3.getText().equals("")) {
            dialog.showMessageDialog(null, "成绩输入有误 请重新输入！");
            return false;
        }
        if (txtscore4.getText().equals("")) {
            dialog.showMessageDialog(null, "成绩输入有误 请重新输入！");
            return false;
        }
        return true;
    }

    public void addStu() {
        btnAdd.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                if (blank() == true) {
                    c.addStudent(new Student(txtNo.getText(), txtName.getText(), txtAge.getText(),txtscore1.getText(),txtscore2.getText(),txtscore3.getText(),txtscore4.getText()));
                    dialog.showMessageDialog(null, "学生信息已添加成功");


                }}});
    }
    public void firstStudent() {
        btnFirst.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                txtNo.setText(c.stuList.get(0).getNo());
                txtName.setText(c.stuList.get(0).getName());
                txtAge.setText(c.stuList.get(0).getAge());
                txtscore1.setText(c.stuList.get(0).getscore1());
                txtscore2.setText(c.stuList.get(0).getscore2());
                txtscore3.setText(c.stuList.get(0).getscore3());
                txtscore4.setText(c.stuList.get(0).getscore4());

            }
        });
    }
    public void lastStudent() {
        btnLast.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                txtNo.setText(c.stuList.get(c.stuList.size() - 1).getNo());
                txtName.setText(c.stuList.get(c.stuList.size() - 1).getName());
                txtAge.setText(c.stuList.get(c.stuList.size() - 1).getAge());
                txtscore1.setText(c.stuList.get(c.stuList.size() - 1).getscore1());
                txtscore2.setText(c.stuList.get(c.stuList.size() - 1).getscore2());
                txtscore3.setText(c.stuList.get(c.stuList.size() - 1).getscore3());
                txtscore4.setText(c.stuList.get(c.stuList.size() - 1).getscore4());
            }
        });
    }

    public void previous() {
        btnPrev.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                int n = 0;
                for (int i = 0; i < c.stuList.size(); i++) {
                    if (c.stuList.get(i).getNo().equals(txtNo.getText())) {
                        n = i - 1;
                    }
                }
                if (c.stuList.get(0).getNo().equals(txtNo.getText())) {
                    dialog.showMessageDialog(null, "再无上一个学生");
                } else {
                    txtNo.setText(c.stuList.get(n).getNo());
                    txtName.setText(c.stuList.get(n).getName());
                    txtAge.setText(c.stuList.get(n).getAge());
                    txtscore1.setText(c.stuList.get(n).getscore1());
                    txtscore2.setText(c.stuList.get(n).getscore2());
                    txtscore3.setText(c.stuList.get(n).getscore3());
                    txtscore4.setText(c.stuList.get(n).getscore4());
                }
            }
        });
    }

    public void next() {
        btnNext.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                int n = 0;
                for (int i = 0; i < c.stuList.size(); i++) {
                    if (c.stuList.get(i).getNo().equals(txtNo.getText())) {
                        n = i + 1;
                    }
                }
                if (c.stuList.get(c.stuList.size() - 1).getNo().equals(txtNo.getText())) {
                    dialog.showMessageDialog(null, "再无下一个学生");
                } else {
                    txtNo.setText(c.stuList.get(n).getNo());
                    txtName.setText(c.stuList.get(n).getName());
                    txtAge.setText(c.stuList.get(n).getAge());
                    txtscore1.setText(c.stuList.get(n).getscore1());
                    txtscore2.setText(c.stuList.get(n).getscore2());
                    txtscore3.setText(c.stuList.get(n).getscore3());
                    txtscore4.setText(c.stuList.get(n).getscore4());}
            }
        });
    }

    public void remove() {
        btnRemove.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                if (c.stuList.size() == 0) {
                    JOptionPane.showMessageDialog(null, "没有该学生信息");
                } else {
                    Student s = new Student(txtNo.getText(), txtName.getText(), txtAge.getText(),txtscore1.getText(),txtscore2.getText(),txtscore3.getText(),txtscore4.getText());
                    if (blank() == true) {
                        System.out.println(c.stuList.contains(s));
                        System.out.println(s);
                        if (!c.stuList.contains(s)) {
                            c.deleteStudent(s);

                            JOptionPane.showMessageDialog(null, "已经删除成功");
                            int a = 0;
                            for (int i = 0; i < c.stuList.size(); i++) {
                                if (c.stuList.get(i).getNo().equals(txtNo.getText())) {
                                    a = i + 1;
                                }
                            }
                            if (c.stuList.size() > 0) {

                                if (c.stuList.get(c.stuList.size() - 1).getNo().equals(txtNo.getText())) {
                                    txtNo.setText(c.stuList.get(0).getNo());
                                    txtName.setText(c.stuList.get(0).getName());
                                    txtAge.setText(c.stuList.get(0).getAge());
                                    txtscore1.setText(c.stuList.get(0).getscore1());
                                    txtscore2.setText(c.stuList.get(0).getscore2());
                                    txtscore3.setText(c.stuList.get(0).getscore3());
                                    txtscore4.setText(c.stuList.get(0).getscore4());
                                } else {
                                    txtNo.setText(c.stuList.get(a).getNo());
                                    txtName.setText(c.stuList.get(a).getName());
                                    txtAge.setText(c.stuList.get(a).getAge());
                                    txtscore1.setText(c.stuList.get(a).getscore1());
                                    txtscore2.setText(c.stuList.get(a).getscore2());
                                    txtscore3.setText(c.stuList.get(a).getscore3());
                                    txtscore4.setText(c.stuList.get(a).getscore4());
                                }
                            } else {
                                clear();
                            }
                        } else {
                            dialog.showMessageDialog(null, "未来找到对应学生的信息");  }}
                }
            }
        });
    }

    public void modify() {
        btnModify.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                if (c.stuList.size() == 0) {
                    dialog.showMessageDialog(null, "没有该学生信息");
                }
                for (Student s : c.stuList) {
                    if (s.getNo().equals(txtNo.getText())) {
                        if (blank() == true) {
                            s.setName(txtName.getText());
                            s.setAge(txtAge.getText());

                            JOptionPane.showMessageDialog(null, "已经修改成功");
                            return;
                        }
                    }
                }
                JOptionPane.showMessageDialog(null, "修改失败请重新操作");
            }
        });
    }

    public void check() {
        btnCheck.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                if ((txtNo.getText().equals(""))) {
                    dialog.showMessageDialog(null, "学号不能为空 请从新输入");
                } else {
                    int m = 0;
                    for (int i = 0; i < c.stuList.size(); i++) {
                        if (c.stuList.get(i).getNo().equals(txtNo.getText())) {
                            JOptionPane.showMessageDialog(null, "已查到该学生信息");
                            txtName.setText(c.stuList.get(i).getName());
                            txtAge.setText(c.stuList.get(i).getAge());
                            txtscore1.setText(c.stuList.get(i).getscore1());
                            txtscore2.setText(c.stuList.get(i).getscore2());
                            txtscore3.setText(c.stuList.get(i).getscore3());
                            txtscore4.setText(c.stuList.get(i).getscore4());
                            break;}
                        m++;}
                    if (m == c.stuList.size()) {
                        dialog.showMessageDialog(null, "没有此学生的相关信息");
                        return;  }
                }
            }
        });
    }

    public void clear() {
        btnClear.addActionListener(new ActionListener() {

                                       public void actionPerformed(ActionEvent e) {
                                           txtNo.setText("");
                                           txtName.setText("");
                                           txtAge.setText("");
                                           txtscore1.setText("");
                                           txtscore2.setText("");
                                           txtscore3.setText("");
                                           txtscore4.setText("");
                                       }
                                   }
        );
    }

    public static void main(String[] args) {
        new Menu();
    }
}

